// 模拟常用高阶函数：map、every、some，在01课程模拟了高阶函数forEach，filter
// 高阶函数有forEach、map、every、some、find\findeindex、reduce、sort.......

//1、map，对于数组中每个元素进行操作
const map = (array, fn) => {
    let results = []
    for (let value of array) {
        results.push(fn(value))
    }
    return results
}

// Tips，for of 用法

// var arr = ['nick','freddy','mike','james'];
// for(var item of arr){	
//     console.log(item);
// }

//map的测试,对每一个元素做平方
// let arr = [1, 2, 3, 4]
// arr = map(arr, v => v * v)
// console.log(arr)

//2、every，是指数组中每一个元素满足条件
const every = (array, fn) => {
    let result = true
    for (let value of array) {
        result = fn(value)
        if (!result) {
            break
        }
    }
    return result
}

//2、every测试，是否都超过10
// let arr = [2, 12, 13, 14]
// let r = every(arr, v => v > 10)
// console.log(r)

// 3、some，是指数组中有一个元素满足条件
const some = (array, fn) => {
    let result = false
    for (let value of array) {
        result = fn(value)
        if (result) {
            break
        }
    }
    return result
}

//3、some测试
let arr = [1, 3, 5, 7]
let r = some(arr, v => v % 2 === 0)
console.log(r)